def is_valid_variable_name(name):
    """
    判断变量名是否合法

    参数:
    name (str): 需要判断的变量名

    返回:
    bool: 如果变量名合法返回 True，否则返回 False
    """
    # 检查变量名是否为空
    if not name:
        return False

    # 检查变量名的第一个字符是否为字母或下划线
    if not (name[0].isalpha() or name[0] == '_'):
        return False

    # 检查变量名的其他字符是否为字母、数字或下划线
    for char in name[1:]:
        if not (char.isalpha() or char.isdigit() or char == '_'):
            return False

    return True

# 测试用例
test_cases = [
    "valid_name",
    "_valid_name",
    "1invalid_name",  
    "invalid-name",   
    "validName123",
    "__valid_name__",
    "validName_123",
    "123",            
    "validName!",     
]

for case in test_cases:
    print(f"{case}: {is_valid_variable_name(case)}")

